/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Controleur;

import Vue.*;
import Modele.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Map;
import javax.swing.JRadioButton;

/**
 *
 * recupere quel bouton radio (reponse) a ete selectionnée verifie si ca été une
 * bonne reponse ou non recupere si le bouton suivant a ete selectionné appelle
 * la fonction qui recupere la question et reponses suivantes dans le fichier
 * xml
 *
 */
public class QCMListener implements ActionListener {

    private AppletFenetre applet;
    private QCM qcm;
    private QCMModele modele;
    private int i;
    private JDOM jdom;

    public QCMListener(AppletFenetre applet) {
        //fenetre = f;
        this.qcm = applet.getQCM();
        this.applet = applet;
    }

    @Override
    public void actionPerformed(ActionEvent ae) {
        if (ae.getActionCommand().equals("Question suivante")) {

            if (verifierBouton()) {
                verifierReponse();
                System.out.println("question suivante");
                //recupere l'enonce 
                //recupere les reponses 
                //effectue des set sur les jlabel et bouton radio 
//            System.out.println("enonce : " +modele.getEnonce());
                //System.out.println("jdom");
                //  JDOM2 jdom = new JDOM2();
                //System.out.println("fin jdom");
                modele = qcm.getQuestionnaire().questionSuivante();
                //System.out.println("modele enonce : " +modele.getEnonce());
                qcm.getjLabel1().setText(modele.getEnonce());
                //System.out.println("jlabel : " +qcm.getjLabel1().getText());

                Map<String, Boolean> reponses = modele.getReponses();
                //System.out.println("map : " +modele.getReponses());
                for (String mapKey : reponses.keySet()) {
                    i++;
                    //System.out.println("i : " + i);
                    // utilise ici hashMap.get(mapKey) pour accéder aux valeurs
                    Boolean reponse = reponses.get(mapKey);

                    if (i == 1) {
                        qcm.getjRadioButton1().setText(mapKey);
                        qcm.getjRadioButton1().setActionCommand("" + reponses.get(mapKey));
                        System.out.println("rep 1 : " + qcm.getjRadioButton1().getText());
                    }
                    if (i == 2) {
                        qcm.getjRadioButton2().setText(mapKey);
                        qcm.getjRadioButton2().setActionCommand("" + reponses.get(mapKey));
                        System.out.println("rep 2 : " + qcm.getjRadioButton2().getText());

                    }
                    if (i == 3) {
                        qcm.getjRadioButton3().setText(mapKey);
                        qcm.getjRadioButton3().setActionCommand("" + reponses.get(mapKey));
                        System.out.println("rep 3 : " + qcm.getjRadioButton3().getText());

                    }


                }
                i = 0;

                if (qcm.getQuestionnaire().getIndice() == 9) {
                    applet.getBoutonValider().setText("Terminer");
                }

            }


        }
        if (ae.getActionCommand().equals("Terminer")) {
            if (applet.getPartie().getScore() >= applet.getPartie().getScoreMinBestJoueur()) {
                System.out.println("On va sauvegarder le score");
                saveScore("qcm");
                afficherScores(classerScore("qcm"));
            }
            applet.getScore().effacerPanel();
            applet.getScore().afficherScores("qcm.txt");
            applet.getCardLayout().show(applet.getContent(), applet.getListContent()[2]);
        }


        if (ae.getActionCommand().equals("Abandonner")) {
            applet.getCardLayout().show(applet.getContent(), applet.getListContent()[0]);
        }



    }

    private boolean verifierBouton() {
        if (qcm.getjRadioButton1().isSelected()
                || qcm.getjRadioButton2().isSelected()
                || qcm.getjRadioButton3().isSelected()) {
            return true;
        } else {
            return false;
        }

    }

    private void verifierReponse() {
        System.out.println("REPOOOONSE " + getBoutonSelectionné().getActionCommand());
        if (getBoutonSelectionné().getActionCommand().equals("" + true)) {
            applet.getPartie().augmenterScore(10);
            qcm.actualiserInfosJoueur();
        }
    }

    private JRadioButton getBoutonSelectionné() {
        if (qcm.getjRadioButton1().isSelected()) {
            return qcm.getjRadioButton1();
        } else if (qcm.getjRadioButton2().isSelected()) {
            return qcm.getjRadioButton2();
        } else {
            return qcm.getjRadioButton3();
        }
    }

    public void saveScore(String type) {
        qcm.getPartie().saveScore(type);
    }

    public String[] classerScore(String type) {
        return qcm.getPartie().classerScores(type);
    }

    public void afficherScores(String[] listeScores) {
        qcm.getPartie().afficherScores(listeScores);
    }
}
